﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI;

namespace proyGestionActivos
{
    public class BaseControl : System.Web.UI.UserControl
    {
        #region Variables y Propiedades


        /// <summary>
        /// Obtiene el nombre del usuario que inició sesión
        /// </summary>
        public System.String UserName
        {
            get
            {
                HttpCookie cookie = Request.Cookies[DatosSesion.InicioSesion];

                if (cookie == null)
                {
                    if (Session[DatosSesion.User] != null)
                    {
                        return Session[DatosSesion.User].ToString();
                    }
                    else
                    {
                        Response.Redirect(Constantes.PaginaLogin);
                        return null;
                    }
                }
                else
                {
                    if (cookie[DatosSesion.User] != null)
                    {
                        return cookie[DatosSesion.User].ToString();
                    }
                    else
                    {
                        if (Session[DatosSesion.User] != null)
                        {
                            return Session[DatosSesion.User].ToString();
                        }
                        else
                        {
                            Response.Redirect(Constantes.PaginaLogin);
                            return null;
                        }
                    }
                }
            }
        }

        /// <summary>
        /// Obtiene el año de la fecha de logeo
        /// </summary>
        /// <returns></returns>
        protected string AnioSesion
        {
            get
            {
                DateTime fecha = DateTime.Now;
                if (Session[DatosSesion.SesionFechaSesion] != null)
                {
                    fecha = Convert.ToDateTime(Session[DatosSesion.SesionFechaSesion]);
                }
                return fecha.Year.ToString();
            }
        }

        /// <summary>
        /// Otbiene el mes de la fecha de logeo
        /// </summary>
        /// <returns></returns>
        protected string MesSesion
        {
            get
            {
                DateTime fecha = DateTime.Now;
                if (Session[DatosSesion.SesionFechaSesion] != null)
                {
                    fecha = Convert.ToDateTime(Session[DatosSesion.SesionFechaSesion]);
                }
                return fecha.Month.ToString();
            }
        }


        private string message;

        /// <summary>
        /// Mensaje de resultado de operaciones
        /// </summary>
        public string Message
        {
            get { return message; }
            set { message = value; }
        }

        #endregion

        #region Eventos

        /// <summary>
        /// Evento para inicialización de la página
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected virtual void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Inicializar();
            }
        }

   


        #region Metodos virtuales

        /// <summary>
        /// Permite mostrar formulario de edición de registros
        /// </summary>
        /// <param name="id"></param>
        protected virtual void Editar(string id)
        {
        }

        /// <summary>
        /// Permite mostrar los datos de un registro en forma detallada
        /// </summary>
        /// <param name="id"></param>
        protected virtual void Consultar(string id)
        {
        }

        /// <summary>
        /// Elimina un registro del listado
        /// </summary>
        /// <param name="id"></param>
        protected virtual void Eliminar(string id)
        {
        }

        /// <summary>
        /// Permite cargar los datos iniciales de un formulario
        /// </summary>
        protected virtual void Inicializar()
        {
        }

      

        /// <summary>
        /// Selecciona un registro del listado para ser consultado
        /// </summary>
        /// <param name="id"></param>
        protected virtual void Seleccionar(string id)
        {

        }

        #endregion


        /// <summary>
        /// Realiza una búsqueda de los controles en un formulario y los habilita
        /// </summary>
        /// <param name="pnlControl"></param>
        /// <param name="flag"></param>
        protected void HabilitarControles(Panel pnlControl, bool flag)
        {

            foreach (Control control in pnlControl.Controls)
            {
                if (control is TextBox)
                {
                    ((TextBox)control).Enabled = flag;
                    continue;
                }

                if (control is DropDownList)
                {
                    ((DropDownList)control).Enabled = flag;
                    continue;
                }

                if (control is RadioButton)
                {
                    ((RadioButton)control).Enabled = flag;
                    continue;
                }

                if (control is CheckBox)
                {
                    ((CheckBox)control).Enabled = flag;
                    continue;
                }
            }
        }

        protected void LimpiarCampos(Panel pnlControl)
        {
            foreach (Control control in pnlControl.Controls)
            {
                if (control is TextBox)
                {
                    ((TextBox)control).Text = string.Empty;
                    continue;
                }

                if (control is DropDownList)
                {
                    ((DropDownList)control).SelectedIndex = -1;
                    continue;
                }

                if (control is RadioButton)
                {
                    ((RadioButton)control).Checked = false;
                    continue;
                }

                if (control is CheckBox)
                {
                    ((CheckBox)control).Checked = false;
                    continue;
                }
            }
        }
    }
}

        #endregion
